云计算时代 Java 程序员面临的挑战和机遇
1. 简单介绍自己
我是小马哥(mercyblitz),Java 劝退师,Apache Dubbo PMC、Spring Cloud Alibaba 项目架构师,《Spring Boot 编程思想》作者,前大厂雇员,目前为自由职业者,主要面向企业培训、架构设计和咨询等。
2. 聊聊你最近一年正在做的项目,它的技术价值怎样?它的行业发展状况是怎样?你负责项目的技术亮点和挑战能否展开讲讲?
近几年,由于云原生概念在技术社区大肆渲染,使得 golang 等一跃成为云原生编程语言的新宠,也让不少从业者对 Java 在云原生的前景堪忧。个人认为,云原生是软件开发在云环境下的一种组织和实践方式,它并不涉及过多的技术细节,也没有明确的指导方案,因此,Java 生态反而在云原生场景下蕴涵着巨大的先发优势。当然 Java 也有其明显的不足,长期以来,JVM 进程启动速度慢,预热周期长,以及内存占用大的特点为人诟病,导致 Java 应用在 Serverless 市场的发展窒碍难行。因此,最近一年,本人仍旧在 Java 云原生贡献,确切地说,是 Java Native 方向。
近日 Dubbo 3.0 的发布,“全新服务发现模型(应用级服务发现)”进入了大家的视野,实际上,这个特性始于 Dubbo 2.7.5,命名为“服务自省”。相关工作早在 2019 年开始展开,一个名为 “cloud-native” 的分支在 Apache Dubbo 项目中创建,除了 “服务自省” 以外,Dubbo 的服务接口元数据架构也初步成形,该架构是 Dubbo 服务网关和服务文档的基础设施,不过随着本人的离职,这方面的开发有些停滞,感兴趣的小伙伴可以参考 Dubbo Code Base 中的 “dubbo-metadata/dubbo-metadata-processor” 模块。
因此,本人的下一步计划将 Dubbo Native 化,由于 Dubbo SPI 扩展点丰富,这部分工作非常具有挑战性。
3. 在技术方案落地的过程中,你通常关注哪些问题?如何保证技术方案顺利实施?
我通常关注两个方面,一个技术方案的成熟度,一个是团队对技术掌握程度。成熟的技术方案通常是经过多方数次讨论后的结果,技术方案选型往往相对保守,不会是最新或最热门的技术。当然,对于那些比较边缘的系统可以试点新技术,提升团队对新技术的掌握程度。技术方案确定后,下一步就是执行,成功与否取决于项目管理的是否到位。
4. 架构师在最近的技术变化的浪潮中,需要面对的挑战都有哪些?如何应对这些挑战?
最近几年,架构师角色往往存在争议,所承受的压力也相对较大。一方面,架构师在所属公司的战略定位各异,另一方面,架构师在组织内部的期望甚高,在技术不断衍进的过程中,不仅需要兼顾技术的深度和广度,而且还得权衡理论知识和实战经验,非常考验架构师的“素质”。职场给出的答卷是,架构师的角色越来越务实,没有足够的实践经验者是无法履行职责。建议资历不深的从业人员向架构师角色转换的过程中要夯实基础,戒躁戒躁,尤其注重代码实践和抽象能力。
5. 在做技术选型的过程中,你经常考虑的问题有些?
前面提到,技术选型作为技术方案的重要过程,需要特别严谨和慎重对待。所以首先评估的是框架或中间件的成熟度和社区生态,比如 Spring Framework 作为业务开发的首选框架选择 ,Netty 作为网络开发的热门选项。
其次,团队对技术的认知是否统一,比如微服务的概念,最有名的出处来自于 Martin Fowler,然而微服务的概念并非他的发明,也并非一家之言。假设团队均认可微服务的架构,然而团队对其理论是否能够落地提出质疑。为了打消顾虑,团队架构师可能将 Chris Richardson 的微服务模式(Microservices Patterns)作为补充。这样的过程可能持续多轮,直到团队形成相对统一的认知。
其三,技术追新是无法避免的,应对要对技术进行谨慎评估。比如 Spring Stack 是一个丰富的 Java 生态,然而它的劣势也非常明显,尤其在分布式计算上,它缺少务实的开发经验,比如 Spring Cloud Data Flow,尽管它在 Spring 项目排名优先,也看得出 Spring 对它的重视,然而它越想统一抽象,越在大规模场景碰到钉子。它或许是未来的趋势,然而不是现在。
6. 云原生领域你看好哪个项目或技术,为什么?
除了传统的 K8s等项目,我比较期待和看好 Java 方面在 Native 上的突破,如果 Java 生态切换到 Native 的赛道,那么,长期的积累基础设施和技术栈将使 Java 再次独领风骚。
7. 请介绍下你这次在 GIAC 演讲的议题或者负责的专题内容
本人在 GIAC 分享的主题《Java 云原生的生态变化与实现》,议程将从开发和运维两个维度来讨论,重点讨论开发上的变化,围绕传统的 Spring 阵营以及 Java 标准实现 Quarkus 来展开。
8. 你在本次 GIAC 议题中,最期待的议题/专场是哪些?
当然最期待云原生专场,尤其是自己分享的主题 :D
9. 对本次 GIAC 有什么寄语
预祝大会圆满完成,希望彼此能够有更多合作和创意火花。
参考阅读
高可用架构欢迎技术架构领域原创文章,欢迎通过公众号菜单「联系我们」进行投稿。